const express = require('express');
const router = express.Router()
const ArticleController = require('../controllers/articleController')
const categoryController = require('../controllers/categoryController');
const TagsController = require('../controllers/tagsController');
const { body, check, query } = require('express-validator');
router.post('/list', ArticleController.articleList)
router.post('/add', [
  body('title').notEmpty().withMessage('文章标题(title)不能为空'),
  body('content').notEmpty().withMessage('文章内容(content)不能为空'),
  body('author_name').notEmpty().withMessage('文章作者(author_name)不能为空'),
  body('pinned').notEmpty().withMessage('是否置顶(pinned)不能为空'),
  body('recommended').notEmpty().withMessage('是否推荐(recommended)不能为空'),
  body('desc').notEmpty().withMessage('文章简介(desc)不能为空'),
  body('stats').notEmpty().withMessage('文章启禁状态(stats)不能为空'),
  check('categoryId').notEmpty().withMessage('分类ID(categoryId)不能为空')
    .custom(value => {
      return categoryController.isCategoryExists(value).then(category => {
        if (!category) {
          return Promise.reject(`${ value }分类不存在`);
        }
      });
    }),
  check('tags').notEmpty().withMessage('标签不能为空')
    .custom(value => {
      const promises = value.map(item => {
        return TagsController.isTagsExists(item).then(tag => {
          if (!tag) {
            return Promise.reject(`${ item }标签不存在`);
          }
        });
      });
      return Promise.all(promises);
    }),
], ArticleController.articleAdd)
router.post('/upd',[
  body('id').notEmpty().withMessage('文章ID(id)不能为空'),
  body('title').notEmpty().withMessage('文章标题(title)不能为空'),
  body('content').notEmpty().withMessage('文章内容(content)不能为空'),
  body('author_name').notEmpty().withMessage('文章作者(author_name)不能为空'),
  body('pinned').notEmpty().withMessage('是否置顶(pinned)不能为空'),
  body('recommended').notEmpty().withMessage('是否推荐(recommended)不能为空'),
  body('desc').notEmpty().withMessage('文章简介(desc)不能为空'),
  body('stats').notEmpty().withMessage('文章启禁状态(stats)不能为空'),
  check('categoryId').notEmpty().withMessage('分类ID(categoryId)不能为空')
    .custom(value => {
      return categoryController.isCategoryExists(value).then(category => {
        if (!category) {
          return Promise.reject(`${ value }分类不存在`);
        }
      });
    }),
  check('tags').notEmpty().withMessage('标签不能为空')
    .custom(value => {
      const promises = value.map(item => {
        return TagsController.isTagsExists(item).then(tag => {
          if (!tag) {
            return Promise.reject(`${ item }标签不存在`);
          }
        });
      });
      return Promise.all(promises);
    }),
], ArticleController.articleUpd)
router.get('/detail', [
  query('id').notEmpty().withMessage('文章ID不能为空'),
], ArticleController.articleDetail)
// router.delete('/del', ArticleController.domianDele)
module.exports = router

